Swift VS Objective-C
最近在重新学习了Swift这门语言,看了官方的文档,在这里想把自己学到的以及一些见解记录下来:
从文档的介绍中发现swift将String,Array, Dictionary设计成了值类型,这其中有什么优势呢?这里就和Objective-C的相同数据结构进行比较一下,在 Objective-C中,String,Array, Dictionary皆被设计成引用类型;
- 值类型相比引用类型,最大的优势在于可以高效的使用内存,值类型咋栈上操作,引用类型在堆上操作。栈上的操作仅仅是单个指针的上下移动,而堆上的操作则牵扯到合并、移位、重新链接。也就是说Swift这样设计大幅度的减少了堆上内存分配和回收的次数;
- Swift将String、Array、Dictionary设计成值类型也是为了线程安全。通过swift的let设置,使得这些数据达到真正意义上的不变,也从根本解决了多线程中内存访问和操作顺序的问题;
- Swift将String、Array、Dictionary设计成值类型还可以提升API的灵活性度。例如 通过实现Collection这样的协议,可以遍历String,使得整个开发更加灵活、高效;
原文作者: Jarvis
原文链接: http://yoursite.com/2019/07/06/Swift VS Objective-C(一)/
版权声明: 转载请注明出处(必须保留作者署名及链接)